#pragma once

#ifdef POSITION_MANAGER_EXPORTS
#define POSITION_API __declspec(dllexport)
#else
#define POSITION_API __declspec(dllimport)
#endif

#include <string>

// 股票持仓信息结构
struct StockPosition {
    char stockCode[10];      // 股票代码
    int quantity;           // 持仓数量
    double currentPrice;    // 当前价格
    // double marketValue;     // 市值
};

// 导出的函数声明
extern "C" {
    // 初始化持仓管理器
    POSITION_API void initPositionManager();

    // 添加或更新股票持仓
    // 如果股票已存在，则更新持仓信息
    // 如果股票不存在，则新增持仓
    POSITION_API bool updateStockPosition(const char* stockCode, 
                                        int quantity, double currentPrice);

    // 减少股票持仓
    // 返回true表示操作成功，false表示持仓不足
    POSITION_API bool decreaseStockPosition(const char* stockCode, int quantity);

    // 获取指定股票的持仓信息
    POSITION_API bool getStockPosition(const char* stockCode, StockPosition* position);

    // 获取所有持仓股票的数量
    POSITION_API int getTotalStockCount();

    // 获取所有持仓的市值总和
    POSITION_API double getTotalValue();

    // 获取所有持仓的盈亏总和
    POSITION_API double getTotalProfit();

    // // 获取所有持仓的详细信息（JSON格式）
    // POSITION_API const char* getAllPositionsInfo();

    // 更新指定股票的当前价格
    POSITION_API bool updateStockPrice(const char* stockCode, double currentPrice);

    // 清空所有持仓
    POSITION_API void clearAllPositions();
} 